package visitor.source;

/**
 * Visit类 为该对象结构中ConcreteElement的每一个类声明一个Visit操作
 *
 * 访问者模式 -- 表示一个作用于某对象结构中的各元素的操作。
 * 可以使得在不改变各元素的类的前提下定义作用于这些元素的新操作
 *
 * 当元素不确定时，那就意味着访问者的抽象方法不稳定，每增加一种元素，
 * 访问者及其子类都需要增加方法，这就违反了open-closed原则
 *
 * 因为，访问者模式适用于数据结构较为稳定但又有易于变化的算法的系统，
 * 将数据结构和作用于结构上的操作解耦
 * 增加新的操作很简单，只是简单增加一个访问者对象
 *
 *
 * @author cheng:
 * @date 2019/4/27 12:46
 */
public abstract class Visitor {

    public abstract void visitConcreteElementA(ConcreteElementA concreteElementA);

    public abstract void visitConcreteElementB(ConcreteElementB concreteElementB );

}
